package com.bsh.erp.pro.basedata.action;

import java.util.List;

import com.bsh.erp.base.BaseAction;
import com.bsh.erp.vto.bean.StafferVTO;

/**
 * 部门与员工 模块
 * @author JiaQi
 */
public class StafferAction extends BaseAction<StafferVTO>{
	private long departmentId;//部门id号
	public void setDepartmentId(long departmentId) {this.departmentId = departmentId;}
	private String isAllDapartment;//是否在全部门中查找
	public void setIsAllDapartment(String isAllDapartment) {this.isAllDapartment = isAllDapartment;}
	/**
	 * 跳转到 部门与员工界面，并显示全部员工信息和获取部门
	 * @author JiaQi
	 * @return 员工和部门界面
	 */
	public String toStaffer(){
//		将全部部门放置值栈
		getActionValueStack().set("departments", departmentService.findAll());
//		将全部员工放进值栈
		getActionValueStack().set("stafferVTOs", stafferVTOService.findAllStafferVTO());
		return "toStaffer";
	}
	
	/**
	 * 通过部门id查找 员工
	 * @author JiaQi
	 * @return 员工和部门界面
	 */
	public String findStafferByDepartment(){
//		将全部部门放置值栈
		getActionValueStack().set("departments", departmentService.findAll());
		
//		将符合条件员工放进值栈
		List<StafferVTO> stafferVTOs = stafferVTOService.findStafferVTOByStaffer((stafferService.findEntitysByHQL("from Staffer where departmentId = ?", departmentId)));
		getActionValueStack().set("stafferVTOs", stafferVTOs);
		return "toStaffer";
	}
	
	/**
	 * 通过员工 id 去删除员工
	 * @author JiaQi
	 * @return 员工和部门界面
	 */
	public String delStafferById(){
//		通过id删除员工
		stafferService.delete(getModel().getStaffer().getId());
//		提示信息
		setMessage("删除成功！");
//		重新设置部门ID 查询
		departmentId = getModel().getStaffer().getDepartmentId();
		return findStafferByDepartment();
	}
	
	/**
	 * 通过id 停用员工
	 * @author JiaQi
	 * @return 员工和部门界面
	 */
	public String stopStafferById(){
//		停用员工
		stafferService.cancelEntity(getModel().getStaffer().getId(),"N");
		
		setMessage("停用成功！");
//		重新设置部门ID 查询
		departmentId = getModel().getStaffer().getDepartmentId();
		return "toStaffer";
	}
	
	/**
	 * 通过Id获取员工，放至值栈  跳转编辑界面
	 * @author JiaQi
	 * @return 跳转到编辑员工界面
	 */
	public String toStafferEdit(){
//		通过ID获取员工
		getActionValueStack().set("staffer", stafferService.getById(getModel().getStaffer().getId()));
		getActionValueStack().set("staffers", stafferService.findAll());
		getActionValueStack().set("departments", departmentService.findAll());
		return "toStafferEdit";
	}
	
	/**
	 * 保存编辑员工信息，返回部门和员工界面
	 * @author JiaQi
	 * @return 部门和员工界面
	 */
	public String editStaffer(){
//		更新实体
		stafferService.update(getModel().getStaffer());
		
		setMessage("保存成功！");
//		重新设置部门ID 查询
		departmentId = getModel().getStaffer().getDepartmentId();
		return "toStaffer";
	}
	
	/**
	 * 跳转到 新增员工界面,查询全部员工
	 * @author JiaQi
	 * @return 新增员工界面
	 */
	public String toStafferNew(){
//		获取全部员工
		getActionValueStack().set("staffers", stafferService.findAll());
		return "toStafferNew";
	}
	
	/**
	 * 保存新增员工信息
	 * @author JiaQi
	 * @return 部门和员工
	 */
	public String newStaffer(){
//		保存新增员工
		stafferService.save(getModel().getStaffer());
		
		setMessage("新增成功！");
		return "toStaffer";
	}
	
	/**
	 * 通过查询条件 模糊查询员工
	 * @return 部门和员工界面
	 */
	public String findStafferBySelect(){
//		判定是否全部门查找
		if(!isAllDapartment.equals("all")){
			List<StafferVTO> stafferVTOs = stafferVTOService.findStafferVTOByStaffer(stafferService.findEntitysByHQL("from Staffer where stafferName = %?% and departmentId = ?",getModel().getStaffer().getStafferName(),departmentId));
			getActionValueStack().set("stafferVTOs",stafferVTOs);
		}else{
			List<StafferVTO> stafferVTOs = stafferVTOService.findStafferVTOByStaffer(stafferService.findEntitysByHQL("from Staffer where stafferName = %?%",getModel().getStaffer().getStafferName()));
			getActionValueStack().set("stafferVTOs",stafferVTOs);
		}
//		将全部部门放置值栈中
		getActionValueStack().set("departments", departmentService.findAll());
		return "toStaffer";
	}
	
}
